use rand::Rng;
use std::io;
use std::cmp::Ordering;
fn main() {
    println!("猜数游戏!");
    // 生成一个100以内的随机数
    // let mut guess = String::new();
    // io::stdin().read_line(&mut guess).expect("error");
    // let secret_number = rand::thread_rng().gen_range(1..=101);
    // println!("我已经随机生成了一个100以内的数字，你有5次机会猜。");
    // 猜5次后退出循环
    // for i in 1..6 {
    //     println!("第{}次猜测:", i);
    //     io::stdin().read_line(&mut guess).expect("error");
    //     let guess: u32 = match guess.trim().parse() {
    //         Ok(num) => num,
    //         Err(_) => continue,
    //     };
    //     print!("你猜的数字是：{}", guess);
    //     if guess < secret_number {
    //         println!("你猜的数字小了，请再试一次。");
    //     } else if guess > secret_number {
    //         println!("你猜的数字大了，请再试一次。");
    //     } else {
    //         println!("恭喜你，你猜对了！");
    //         break;
    //     }
    // }

    // 无限循环
    let secret_number = rand::thread_rng().gen_range(1..=101);
    println!("我已经随机生成了一个100以内的数字，你有无限次机会猜。{}", secret_number);
    loop {
        let mut guess = String::new();
        io::stdin().read_line(&mut guess).expect("error");
        print!("你猜的数字是：{}", guess);
        // io::stdin().read_line(&mut guess).expect("error");  输入非数字时会引起程序崩溃，改为下面优化
        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => {
                println!("输入非数字，请重新输入。");
                continue;
            },
        };
        match guess.cmp(&secret_number) {
            Ordering::Less => println!("你猜的数字小了，请再试一次。"),
            Ordering::Greater => println!("你猜的数字大了，请再试一次。"),
            Ordering::Equal => {
                println!("恭喜你，你猜对了！");
                break;
            }
        }
    }
}
//
